package entity;

import com.linuxense.javadbf.DBFField;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.*;

/**
 * 读取 DBF 时, 入参对象
 *
 * @author Chen Yuan
 * @create 2021-12-21  10:49
 */
@Data
@Accessors(chain = true)
public class DbfParam implements Serializable {
// -- 导入导出公共入参 --------------------
	/**
	 * [buf/filePath 二选一必填] 文件对象
	 */
	private String filePath;
	/**
	 * [选填]
	 * 表头和字段名映射关系
	 * - 若导入文件,则是:"表头名称:实体类字段名称",  若导出文件, 则是:"实体类字段名称:表头名称"
	 * 示例 "id:id, password:password", 表头为中文时 "主键:id, 密码:password"
	 */
	private Map<String, String> columnMap;
	/**
	 * [必填] 是否流操作 , 默认 false
	 */
	private Boolean isStream = false;


// -- 导入 DBF 文件时入参 --------------------
	/**
	 * [buf/filePath 二选一必填] 文件输入流
	 */
	private byte[] buf;


// -- 导出 DBF 文件时入参 --------------------
	/**
	 * 文件输出流
	 */
	private HttpServletResponse response;

	/**
	 * 需要输出的数据列表
	 */
	private List dataList;

	/**
	 * 字段信息
	 */
	private List<DBFField> fieldList = new ArrayList<>();

	/**
	 * 数据行信息
	 */
	private List<Object[]> rowData = new ArrayList<>();

	/**
	 * 入参是否是实体类
	 */
	private Boolean isEntity = false;

	/**
	 * 输出的文件名
	 */
	private String fileName;
}
